在跑測試程式的時候,不免會遇到資料殘留導致數據計算錯誤的情況,也就是程式碼其實是正確的,只是因為之前跑了其他測試,在測試的資料庫已經留有一些資料,導致最後統計的時候出了問題,跑不過測試。這時使用 database_cleaner 這個gem可以協助解決這個狀況。
那麼我們便開始吧~
group :development, :test do
gem 'database_cleaner', '~> 2.0', '>= 2.0.1'
end
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
end
config.around(:each) do |example|
DatabaseCleaner.cleaning do
example.run
end
end
如果執行測試碼還是無法通過,將 :suit
改成 :each
, 確保先前的數據每一筆都確實清除
參考資料:https://github.com/DatabaseCleaner/database_cleaner/